package com.example.lib.io;

/**
 * 装饰设计模式：
 * 当想要对已有的对象进行功能增强时，可以定义类，将已有对象传入，基于已有的功能，并提供加强功能。
 * 那么自定义的该类称为装饰类。
 *
 * 装饰类通常会通过构造方法接收被装饰的对象。
 * 并基于被装饰的对象的功能，提供更强的功能。
 */
public class m_io_decorator_19_06 {
    public static void main(String[] args) {
        Person19_06 p=new Person19_06();
//        p.chifan();
        SuperPerson sp=new SuperPerson(p);
        sp.superChifan();
    }
}

class Person19_06{
    public void chifan(){
        System.out.println("吃饭");
    }
}
class SuperPerson{
    private Person19_06 p;

    public SuperPerson(Person19_06 p) {
        this.p = p;
    }
    public void superChifan(){
        System.out.println("开胃酒");
        p.chifan();
        System.out.println("甜点");
        System.out.println("来一根烟");
    }
}
